Add a 'namemsg' parameter to $wgExtensionCredits for localizable names
authorBartosz Dziewoński <matma.rex@gmail.com>
Sat, 21 Jun 2014 10:33:54 +0000 (12:33 +0200)
committerBartosz Dziewoński <matma.rex@gmail.com>
Sat, 21 Jun 2014 11:13:44 +0000 (13:13 +0200)
Works similarly to 'description' and 'descriptionmsg', but 'name'
is still required because of weird shenanigans Special:Version does.
(And would be a good idea anyway for backwards-compatibility with
older MediaWikis.)

The primary use-case is skins (which have already traditionally had
translateable names in MediaWiki, but weren't always shown on
Special:Version), but there's no reason why regular extensions can't
use this too.

Skins which already have a translated name for Special:Preferences
('skinname-<skin>' messages) can reuse the same message here.

Change-Id: Iae6f770a8fe1968670429c22aefc1ae55e8dba6f

RELEASE-NOTES-1.24
includes/DefaultSettings.php
includes/api/ApiQuerySiteinfo.php
includes/specials/SpecialVersion.php

index 6c381bb..f891c8e 100644 (file)
@@ -82,6 +82,10 @@ production.
 * Skins can now use 'remoteSkinPath' when defining ResourceLoader modules.
   This works the same as 'remoteExtPath' but is relative to the skins/ folder
   instead of the extensions/ folder.
+* Extensions and skins may now use 'namemsg' in $wgExtensionCredits in addition
+  to 'name', to allow for the name to be localizable. 'name' should still be
+  specified for backwards-compatibility and to define the path Special:Version
+  uses to find extension license information.
 
 === Bug fixes in 1.24 ===
 * (bug 49116) Footer copyright notice is now always displayed in user language
index bc7959b..5d09869 100644 (file)
@@ -6083,6 +6083,7 @@ $wgAutoloadAttemptLowercase = true;
  * $wgExtensionCredits[$type][] = array(
  *     'path' => __FILE__,
  *     'name' => 'Example extension',
+ *     'namemsg' => 'exampleextension-name',
  *     'author' => array(
  *         'Foo Barstein',
  *     ),
@@ -6102,15 +6103,24 @@ $wgAutoloadAttemptLowercase = true;
  *    'skin', 'api', or 'other', or any additional types as specified through the
  *    ExtensionTypes hook as used in SpecialVersion::getExtensionTypes().
  *
+ * - name: Name of extension as an inline string instead of localizable message.
+ *    Do not omit this even if 'namemsg' is provided, as it is used to override
+ *    the path Special:Version uses to find extension's license info, and is
+ *    required for backwards-compatibility with MediaWiki 1.23 and older.
+ *
+ * - namemsg (since MW 1.24): A message key for a message containing the
+ *    extension's name, if the name is localizable. (For example, skin names
+ *    usually are.)
+ *
  * - author: A string or an array of strings. Authors can be linked using
  *    the regular wikitext link syntax. To have an internationalized version of
  *    "and others" show, add an element "...". This element can also be linked,
  *    for instance "[http://example ...]".
  *
  * - descriptionmsg: A message key or an an array with message key and parameters:
- *    `'descriptionmsg' => array( 'exampleextension-desc', param1, param2, ... ),`
+ *    `'descriptionmsg' => 'exampleextension-desc',`
  *
- * - description: Description of extension as inline string instead of
+ * - description: Description of extension as an inline string instead of
  *    localizable message (omit in favour of 'descriptionmsg').
  *
  * - license-name: Short name of the license (used as label for the link), such
index 48a4ef4..a420b37 100644 (file)
@@ -552,6 +552,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                if ( isset( $ext['name'] ) ) {
                                        $ret['name'] = $ext['name'];
                                }
+                               if ( isset( $ext['namemsg'] ) ) {
+                                       $ret['namemsg'] = $ext['namemsg'];
+                               }
                                if ( isset( $ext['description'] ) ) {
                                        $ret['description'] = $ext['description'];
                                }
index 657999c..b0523a7 100644 (file)
@@ -587,7 +587,16 @@ class SpecialVersion extends SpecialPage {
 
                // We must obtain the information for all the bits and pieces!
                // ... such as extension names and links
-               $extensionName = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+               if ( isset( $extension['namemsg'] ) ) {
+                       // Localized name of extension
+                       $extensionName = $this->msg( $extension['namemsg'] )->text();
+               } elseif ( isset( $extension['name'] ) ) {
+                       // Non localized version
+                       $extensionName = $extension['name'];
+               } else {
+                       $extensionName = '[no name]';
+               }
+
                if ( isset( $extension['url'] ) ) {
                        $extensionNameLink = Linker::makeExternalLink(
                                $extension['url'],